import React, { useState } from "react";
// 问题：两次setcount可是只进行一次改变怎么办？
export const Count2=()=>{
    const [count,setCount]=useState(()=>0)
    const add=()=>{
// 进行两次调用但是只调用第一个是为什么？
/*因为setCount调用时同步的，此时count数为0，两次调用是相同的状态，一样是setCount(1)
而react会阻止相同状态重复更新。 执行是异步的而已*/

        // setCount(count+1)
        // setCount(count+1)

        // 解决方案 当遇到新值依赖于旧值改变时可以这样解决
        // 通过fn函数的形式拿到旧参来进行调用 回调函数是很灵活的，React会在某一时刻进行调用是异步的，所以上一次的pre状态是已经改变了的
        // 这样就可以重复相加了
        setCount((pre)=>pre+1)
        setCount((pre)=>pre+1)
    }
    return(

        <>
        {count}
        <button onClick={add}>+1</button>
        </>
    )
}


// 强制刷新的措施
// 当组件内部的其他状态没有改变时，则我们可以传新对象给强制刷新
export  const UpDate=()=>{
    const [,forceUpdate]=useState({})

    const handle=()=>{
        forceUpdate({})
    }
    return(
        <>
        
        <button onClick={handle}>{Date.now()}</button>
        </>
    )


}